package cn.tedu.vr;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;

import com.google.vr.sdk.widgets.pano.VrPanoramaEventListener;
import com.google.vr.sdk.widgets.pano.VrPanoramaView;

import java.io.InputStream;

public class VRPicActivity extends AppCompatActivity {
    //VR图片控件
    private VrPanoramaView vrImage;
    //异步任务，线程短期操作
    //AsyncTask 必须被子类化才能使用。
    // 子类将覆盖的至少一种方法（ doInBackground ），
    // 最经常将覆盖的第二个（ onPostExecute 。）
    private AsyncTask<Void,Void, Bitmap> task;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vrpic);
        init();
    }

    /**
     *
     */
    private void init(){
       vrImage = (VrPanoramaView)findViewById(R.id.vr_image);
       //设置事件监听器
       vrImage.setEventListener(new VrPanoramaEventListener());
       //异步加载全景图片
       // 创建一个新的异步任务。必须在 UI 线程上调用此构造函数
       // execute()使用指定的参数执行任务。任务返回自身（this），以便调用者可以保留对它的引用。
       task = new AsyncTask<Void, Void, Bitmap>() {
           @Override
           protected Bitmap doInBackground(Void... voids) {
                try {
                    //从asset目录中加载图片
                    InputStream is = getAssets().open("andes.jpg");
                    Bitmap bitmap = BitmapFactory.decodeStream(is);
                    is.close();
                    return bitmap;
                } catch (Exception e){
                    e.printStackTrace();
                }
               return null;
           }

           @Override
           protected void onPostExecute(Bitmap bitmap) {
               super.onPostExecute(bitmap);
               if (bitmap != null){
                   //加载配置
                   VrPanoramaView.Options options = new VrPanoramaView.Options();
                   //设置图片为立体效果
                   options.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
                   //加载图片
                   vrImage.loadImageFromBitmap(bitmap,options);
               }
           }
       }.execute();
    }

    @Override
    protected void onResume() {
        super.onResume();
        vrImage.resumeRendering();//恢复渲染
    }
    @Override
    protected void onPause() {
        super.onPause();
        vrImage.pauseRendering();//暂停渲染
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        vrImage.shutdown();     //关闭渲染释放内存
        if (task != null) {
            task.cancel(true); //停止异步任务
            task = null;
        }
    }
}